[iOS] Fabric 入門 #6 Twitter にツイートを投稿する (REST API 編)
REST API を使ってツイートを投稿する
前回は TWTRComposer というクラスを使って、ダイアログからツイートする方法を紹介しました。今回はこれの発展形(?)で、Twitter の REST API を使ってツイートしてみたいと思います。
今回紹介する方法は REST API をコールするので、UI は特に必要ありません。ユーザーに変わってアプリからツイートを投稿することができます。以下のような場合に有効です。
- アプリ内の投稿機能のついでにツイートも投稿させる
- ゲームのスコアをツイートさせる
- 診断結果をツイートさせる
- ツイートをアプリから投稿したことにする *1
statuses/update API をコールする
ツイートを投稿するには POST statuses/update という API を利用します。API の呼び出し方の基本は以前解説していますので、こちらをちょっと書き換えるだけでOKです。
#import "ViewController.h" #import <TwitterKit/TwitterKit.h> @interface ViewController () @property (weak, nonatomic) TWTRLogInButton *logInButton; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // TWTRLogInButtonの設定 TWTRLogInButton *logInButton = [TWTRLogInButton buttonWithLogInCompletion:^(TWTRSession *session, NSError *error) { if (error) { NSLog(@"Error : %@", error); } else { NSLog(@"UserName : %@", session.userName); self.logInButton.hidden = YES; [self composeTweetREST]; } }]; logInButton.center = self.view.center; self.logInButton = logInButton; [self.view addSubview:logInButton]; } - (void)composeTweetREST { // タイムラインを取得 NSString *endpoint = @"https://api.twitter.com/1.1/statuses/update.json"; NSDictionary *parameters = @{@"status":@"スパイダーフラッシュローリングサンダー"}; NSError *error = nil; TWTRAPIClient *client = [[Twitter sharedInstance] APIClient]; NSURLRequest *request = [client URLRequestWithMethod:@"POST" URL:endpoint parameters:parameters error:&error]; if (error) { NSLog(@"Error: %@", error); return; } [client sendTwitterRequest:request completion:^(NSURLResponse *response, NSData *data, NSError *connectionError) { if (connectionError) { NSLog(@"Error: %@", error); return; } NSError *jsonError = nil; id jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; if (jsonError) { NSLog(@"Error: %@", jsonError); return; } NSLog(@"Result : %@", jsonData); }]; } @end
アプリを実行するとログイン中の Twitter ユーザーでツイートが投稿されます。
まとめ
今回の内容は Twitter と連係するアプリを開発する場合、よく使う実装だと思います。Fabric を使うとかなり簡単に実装できて良いですね!
脚注
- 保存されるツイートの source がアプリ名になります。TWTRComposer 及び Social フレームワークを使用した場合はここが Apple で統一されます。この表示は現在公式アプリでは使われていませんが、一部 Twitter クライアントアプリでは利用されています。 ↩